"""
- 数据库配置
- redis配置
- session配置
- CSRFProtect配置
- 数据库迁移配置
- 日志信息配置
"""""

import random
from datetime import datetime,timedelta

from flask import current_app
from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager

from info import create_app,db,models  # 导入目的在迁移的时候知道models存在，可以迁移
from info.models import User

app = create_app("develop")

# 创建manager对象，管理app
manager = Manager(app)

# 使用migrate关联app,db
Migrate(app,db)

# 给manager添加操作命令
manager.add_command('db',MigrateCommand)


# 创建管理员方法，通过flask_script模块提供的option装饰器
# 参数1：表示传递的值，参数2：用户说明参数1，参数3：dest目标值用来传递形参的
@manager.option('-u', '--username', dest='username')
@manager.option('-p', '--password', dest='password')
def create_superuser(username,password):

    # 创建管理员用户
    admin = User()

    # 设置属性
    admin.nick_name = username
    admin.mobile = username
    admin.password = password
    admin.is_admin = True

    # 保存到数据库
    try:
        db.session.add(admin)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return " 创建失败"
    return "创建成功"


# 为了查看图表方便，添加测试用户
@manager.option('-t','--test',dest='test')
def add_test_user(test):
    # 定义用户容器
    user_list = []
    # 创建测试用户，设置属性
    for i in range(0,1000):
        user = User()
        user.mobile = '138%08d'%i
        user.nick_name = "老王%d"%i
        user.password_hash = "pbkdf2:sha256:150000$DyOBtSq0$0085db2901369d79a7c9a93f8c3e5a4b7189dcece593e5d00f22e76ef7b49d1a"

        # 最近一个月以来登陆时间
        user.last_login = datetime.now()-timedelta(seconds=random.randint(0,31*3600*24))
        user_list.append(user)

    try:
        db.session.add_all(user_list)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "创建失败"
    return "创建成功"

if __name__ == "__main__":
    manager.run()